階段性開發,這不就是普通到不普通的「常識」嗎? 這有什麼好說的呢?
雖說如此,但對於階段開發,雖然目的顯然易懂,但實際上卻有許多細節需要注意,這些細節,往往是開發者在實際開發中容易忽略的地方。
這個減少開發時間的方法,是最常見的階段開發方法,就是將非必要功能,放到後面開發。
問題是對於很多人來說,什麼是非必要功能,很難界定。 這個問題,其實很簡單,只要問自己一個問題就可以了:「如果這個功能不做,會不會影響使用者的使用體驗?」 如果不會,那就是非必要功能。
這個作法,是將功能先做出來,但是不要求功能完整,只要能達到目的即可。
在整個產品中,有什麼功能可以先做出來,但是不要求完整呢?舉個例子,假設我們要做一個網路商城,我們可以先做出「商品列表」的功能,但是不要求功能完整,只要能夠顯示商品列表即可,不需要有「加入購物車」、「結帳」等功能,如果需要購買商品,可以直接聯絡客服。
這個作法,是將功能的複雜度降低,讓功能能夠快速完成。
例如我們要做一個影片上傳功能,原本的需求時,要求使用者可以上傳影片,並且可以設定影片的隱私權限,但是我們可以先將隱私權限的功能簡化,讓使用者只能上傳影片,而不能設定隱私權限,縮圖也不是自動產生,而是由管理員手動上傳。
階段開發的另一個方法,是將功能的實作,先以接口的方式定義出來,但是實作的部分,先不做。
這個方法的好處是,可以讓開發者先定義出功能的使用方式,並且讓其他開發者可以先開發其他功能,而不用等待這個功能的實作。
最常見的例子,就是前後端分離的開發方式,前端開發者可以先定義出 API 的使用方式,後端開發者則可以先開發 API 的實作,而不用等待前端開發者。
這個方法,是將功能的實作,先以模擬的方式完成,但是實際的功能,先忽略,等到後面再實作。
這樣的好處是,可以讓部分功能先完成,讓開發者可以先進行測試,而不用等待其他功能的完成,最常見的例子,就是前端開發者,可以先使用假資料,來測試前端的功能,而不用等待後端的功能完成。
將 AP 切換成模組化,可以讓開發者先開發部分功能,不需要等待需求完整,就可以開始開發。
這樣做可以讓風險降低,並且可以獨立測試,但是需要注意的是,模組化的功能,必須要能夠獨立運作,並且不會影響其他模組的運作。
通常階段性開發,都是為了減少開發時間,但是這並不代表,階段性開發就一定能夠減少開發時間,有時候,階段性開發反而會增加開發時間,這是為什麼呢?
因為階段性開發,會增加開發者的負擔,開發者必須要花更多的時間,來處理階段性開發所帶來的問題,這些問題,可能是開發者沒有預料到的,也可能是開發者沒有考慮到的,但是這些問題,都會增加開發時間。
為了降低這些額外的開發時間,開發者必須要在開發前,先考慮到這些問題。
這裡我們我們需要定義好邊界,讓開發者可以在邊界內開發,而不用擔心邊界外的問題,這樣才能夠減少開發時間,並且確保日後修改的彈性。